From 17c4838569364aa96dbaf37de3b2c8f5322ef5ff Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 30 Aug 2020 22:25:36 -0400 Subject: [PATCH] Drop GtkRadioButton --- docs/reference/gtk/gtk4-docs.xml | 1 - docs/reference/gtk/gtk4-sections.txt | 25 - docs/reference/gtk/gtk4.types.in | 1 - docs/reference/gtk/images/radio-group.png | Bin 5596 -> 0 bytes docs/reference/gtk/meson.build | 1 - docs/reference/gtk/section-accessibility.md | 2 +- docs/reference/gtk/visual_index.xml | 3 - gtk/gtk-autocleanups.h | 1 - gtk/gtk.h | 1 - gtk/gtkradiobutton.c | 670 -------------------- gtk/gtkradiobutton.h | 74 --- gtk/meson.build | 2 - 12 files changed, 1 insertion(+), 780 deletions(-) delete mode 100644 docs/reference/gtk/images/radio-group.png delete mode 100644 gtk/gtkradiobutton.c delete mode 100644 gtk/gtkradiobutton.h diff --git a/docs/reference/gtk/gtk4-docs.xml b/docs/reference/gtk/gtk4-docs.xml index f65688b0fd..62380e2ad8 100644 --- a/docs/reference/gtk/gtk4-docs.xml +++ b/docs/reference/gtk/gtk4-docs.xml @@ -201,7 +201,6 @@ Buttons and Toggles - diff --git a/docs/reference/gtk/gtk4-sections.txt b/docs/reference/gtk/gtk4-sections.txt index 8083e9aada..1ec07553d8 100644 --- a/docs/reference/gtk/gtk4-sections.txt +++ b/docs/reference/gtk/gtk4-sections.txt @@ -2290,31 +2290,6 @@ GtkProgressBarPrivate gtk_progress_bar_get_type -
-gtkradiobutton -GtkRadioButton -GtkRadioButton -gtk_radio_button_new -gtk_radio_button_new_from_widget -gtk_radio_button_new_with_label -gtk_radio_button_new_with_label_from_widget -gtk_radio_button_new_with_mnemonic -gtk_radio_button_new_with_mnemonic_from_widget -gtk_radio_button_set_group -gtk_radio_button_get_group -gtk_radio_button_join_group - -GTK_RADIO_BUTTON -GTK_IS_RADIO_BUTTON -GTK_TYPE_RADIO_BUTTON -GTK_RADIO_BUTTON_CLASS -GTK_IS_RADIO_BUTTON_CLASS -GTK_RADIO_BUTTON_GET_CLASS - -GtkRadioButtonPrivate -gtk_radio_button_get_type -
-
gtkrange GtkRange diff --git a/docs/reference/gtk/gtk4.types.in b/docs/reference/gtk/gtk4.types.in index cede3f0619..5981ffb897 100644 --- a/docs/reference/gtk/gtk4.types.in +++ b/docs/reference/gtk/gtk4.types.in @@ -179,7 +179,6 @@ gtk_print_settings_get_type @DISABLE_ON_W32@gtk_print_unix_dialog_get_type gtk_progress_bar_get_type gtk_property_expression_get_type -gtk_radio_button_get_type gtk_range_get_type gtk_recent_manager_get_type gtk_revealer_get_type diff --git a/docs/reference/gtk/images/radio-group.png b/docs/reference/gtk/images/radio-group.png deleted file mode 100644 index da6245f9f67af7cdcc320dbb3d5cd93ec045656d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5596 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 diff --git a/docs/reference/gtk/meson.build b/docs/reference/gtk/meson.build index 431192c2c6..4441cc2cf4 100644 --- a/docs/reference/gtk/meson.build +++ b/docs/reference/gtk/meson.build @@ -340,7 +340,6 @@ images = [ 'images/popup-slide.png', 'images/printdialog.png', 'images/progressbar.png', - 'images/radio-group.png', 'images/right-center.png', 'images/right-end.png', 'images/right-start.png', diff --git a/docs/reference/gtk/section-accessibility.md b/docs/reference/gtk/section-accessibility.md index 4c0a429270..ade43a1bfa 100644 --- a/docs/reference/gtk/section-accessibility.md +++ b/docs/reference/gtk/section-accessibility.md @@ -53,7 +53,7 @@ Each role name is part of the #GtkAccessibleRole enumeration. | `LABEL` | A visible name or caption for a user interface component | #GtkLabel | | `METER` | Represents a value within a known range | #GtkLevelBar | | `PROGRESS_BAR` | An element that display progress | #GtkProgressBar | -| `RADIO` | A checkable input in a group of radio roles | #GtkRadioButton | +| `RADIO` | A checkable input in a group of radio roles | #GtkCheckButton | | `SCROLLBAR` | A graphical object controlling the scrolling of content | #GtkScrollbar | | `SEARCH_BOX` | A text box for entering search criteria | #GtkSearchEntry | | `SEPARATOR` | A divider that separates sections of content or groups of items | #GtkSeparator | diff --git a/docs/reference/gtk/visual_index.xml b/docs/reference/gtk/visual_index.xml index f5e027ed0b..963febf68b 100644 --- a/docs/reference/gtk/visual_index.xml +++ b/docs/reference/gtk/visual_index.xml @@ -102,9 +102,6 @@ - - - diff --git a/gtk/gtk-autocleanups.h b/gtk/gtk-autocleanups.h index b5689b9075..eb4fb1b874 100644 --- a/gtk/gtk-autocleanups.h +++ b/gtk/gtk-autocleanups.h @@ -120,7 +120,6 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkPrintOperation, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkPrintOperationPreview, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkPrintSettings, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkProgressBar, g_object_unref) -G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkRadioButton, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkRange, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkRecentManager, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkRevealer, g_object_unref) diff --git a/gtk/gtk.h b/gtk/gtk.h index 4819d51756..be942b218b 100644 --- a/gtk/gtk.h +++ b/gtk/gtk.h @@ -201,7 +201,6 @@ #include #include #include -#include #include #include #include diff --git a/gtk/gtkradiobutton.c b/gtk/gtkradiobutton.c deleted file mode 100644 index 1ee663896d..0000000000 --- a/gtk/gtkradiobutton.c +++ /dev/null @@ -1,670 +0,0 @@ -/* GTK - The GIMP Toolkit - * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see . - */ - -/* - * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS - * file for a list of people on the GTK+ Team. See the ChangeLog - * files for a list of changes. These files are distributed with - * GTK+ at ftp://ftp.gtk.org/pub/gtk/. - */ - -#include "config.h" - -#include "gtkradiobutton.h" - -#include "gtkwidgetprivate.h" -#include "gtklabel.h" -#include "gtkmarshalers.h" -#include "gtkprivate.h" -#include "gtkintl.h" -#include "gtkstylecontextprivate.h" - -/** - * SECTION:gtkradiobutton - * @Short_description: A choice from multiple check buttons - * @Title: GtkRadioButton - * @See_also: #GtkComboBox - * - * A single radio button performs the same basic function as a #GtkToggleButton, - * as its position in the object hierarchy reflects. It is only when multiple - * radio buttons are grouped together that they become a different user - * interface component in their own right. - * - * Every radio button is a member of some group of radio buttons. When one is - * selected, all other radio buttons in the same group are deselected. A - * #GtkRadioButton is one way of giving the user a choice from many options. - * - * Radio button widgets are created with gtk_radio_button_new(), passing %NULL - * as the argument if this is the first radio button in a group. In subsequent - * calls, the group you wish to add this button to should be passed as an - * argument. Optionally, gtk_radio_button_new_with_label() can be used if you - * want a text label on the radio button. - * - * Alternatively, when adding widgets to an existing group of radio buttons, - * use gtk_radio_button_new_from_widget() with a #GtkRadioButton that already - * has a group assigned to it. The convenience function - * gtk_radio_button_new_with_label_from_widget() is also provided. - * - * To retrieve the group a #GtkRadioButton is assigned to, use - * gtk_radio_button_get_group(). - * - * To remove a #GtkRadioButton from one group and make it part of a new one, - * use gtk_radio_button_set_group(). - * - * The group list does not need to be freed, as each #GtkRadioButton will remove - * itself and its list item when it is destroyed. - * - * ## How to create a group of two radio buttons. - * - * |[ - * void create_radio_buttons (void) { - * - * GtkWidget *window, *radio1, *radio2, *box, *entry; - * window = gtk_window_new (); - * box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2); - * gtk_box_set_homogeneous (GTK_BOX (box), TRUE); - * - * // Create a radio button with a GtkEntry widget - * radio1 = gtk_radio_button_new (NULL); - * entry = gtk_entry_new (); - * gtk_box_append (GTK_BOX (radio1), entry); - * - * - * // Create a radio button with a label - * radio2 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (radio1), - * "I’m the second radio button."); - * - * // Pack them into a box, then show all the widgets - * gtk_box_append (GTK_BOX (box), radio1); - * gtk_box_append (GTK_BOX (box), radio2); - gtk_window_set_child (GTK_WINDOW (window),box); - * gtk_widget_show (window); - * return; - * } - * ]| - * - * When an unselected button in the group is clicked the clicked button - * receives the #GtkToggleButton::toggled signal, as does the previously - * selected button. - * Inside the #GtkToggleButton::toggled handler, gtk_toggle_button_get_active() - * can be used to determine if the button has been selected or deselected. - * - * # CSS nodes - * - * |[ - * radiobutton - * ├── radio - * ╰── - * ]| - * - * A GtkRadioButton with indicator (see gtk_check_button_set_draw_indicator())) has a - * main CSS node with name radiobutton and a subnode with name radio. - * - * |[ - * button.radio - * ├── radio - * ╰── - * ]| - * - * A GtkRadioButton without indicator changes the name of its main node - * to button and adds a .radio style class to it. The subnode is invisible - * in this case. - * - * # Accessibility - * - * GtkRadioButton uses the #GTK_ACCESSIBLE_ROLE_RADIO role. - */ - -typedef struct _GtkRadioButtonClass GtkRadioButtonClass; - -struct _GtkRadioButton -{ - GtkToggleButton parent_instance; -}; - -struct _GtkRadioButtonClass -{ - GtkToggleButtonClass parent_class; - - void (*group_changed) (GtkRadioButton *radio_button); -}; - -typedef struct -{ - GSList *group; -} GtkRadioButtonPrivate; - -enum { - PROP_0, - PROP_GROUP, - LAST_PROP -}; - -enum { - GROUP_CHANGED, - N_SIGNALS -}; - -static GParamSpec *radio_button_props[LAST_PROP] = { NULL, }; -static guint signals[N_SIGNALS] = { 0 }; - -static void gtk_radio_button_dispose (GObject *object); -static void gtk_radio_button_clicked (GtkButton *button); - -G_DEFINE_TYPE_WITH_PRIVATE (GtkRadioButton, gtk_radio_button, GTK_TYPE_TOGGLE_BUTTON) - -static void -gtk_radio_button_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) -{ - GtkRadioButton *radio_button; - - radio_button = GTK_RADIO_BUTTON (object); - - switch (prop_id) - { - GSList *slist; - GtkRadioButton *button; - - case PROP_GROUP: - button = g_value_get_object (value); - - if (button) - slist = gtk_radio_button_get_group (button); - else - slist = NULL; - gtk_radio_button_set_group (radio_button, slist); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -gtk_radio_button_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) -{ - switch (prop_id) - { - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -gtk_radio_button_class_init (GtkRadioButtonClass *class) -{ - GObjectClass *gobject_class; - GtkButtonClass *button_class; - GtkWidgetClass *widget_class; - - gobject_class = G_OBJECT_CLASS (class); - widget_class = (GtkWidgetClass*) class; - button_class = (GtkButtonClass*) class; - - gobject_class->dispose = gtk_radio_button_dispose; - gobject_class->set_property = gtk_radio_button_set_property; - gobject_class->get_property = gtk_radio_button_get_property; - - /** - * GtkRadioButton:group: - * - * Sets a new group for a radio button. - */ - radio_button_props[PROP_GROUP] = - g_param_spec_object ("group", - P_("Group"), - P_("The radio button whose group this widget belongs to."), - GTK_TYPE_RADIO_BUTTON, - GTK_PARAM_WRITABLE); - - g_object_class_install_properties (gobject_class, LAST_PROP, radio_button_props); - - button_class->clicked = gtk_radio_button_clicked; - - class->group_changed = NULL; - - /** - * GtkRadioButton::group-changed: - * @button: the object which received the signal - * - * Emitted when the group of radio buttons that a radio button belongs - * to changes. This is emitted when a radio button switches from - * being alone to being part of a group of 2 or more buttons, or - * vice-versa, and when a button is moved from one group of 2 or - * more buttons to a different one, but not when the composition - * of the group that a button belongs to changes. - */ - signals[GROUP_CHANGED] = g_signal_new (I_("group-changed"), - G_OBJECT_CLASS_TYPE (gobject_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (GtkRadioButtonClass, group_changed), - NULL, NULL, - NULL, - G_TYPE_NONE, 0); - - gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_RADIO); -} - -static void -gtk_radio_button_init (GtkRadioButton *self) -{ - GtkRadioButtonPrivate *priv = gtk_radio_button_get_instance_private (self); - GtkWidget *widget = GTK_WIDGET (self); - - gtk_widget_set_receives_default (widget, FALSE); - - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self), TRUE); - - priv->group = g_slist_prepend (NULL, self); -} - -/** - * gtk_radio_button_set_group: - * @radio_button: a #GtkRadioButton. - * @group: (element-type GtkRadioButton) (allow-none): an existing radio - * button group, such as one returned from gtk_radio_button_get_group(), or %NULL. - * - * Sets a #GtkRadioButton’s group. It should be noted that this does not change - * the layout of your interface in any way, so if you are changing the group, - * it is likely you will need to re-arrange the user interface to reflect these - * changes. - */ -void -gtk_radio_button_set_group (GtkRadioButton *radio_button, - GSList *group) -{ - GtkRadioButtonPrivate *priv = gtk_radio_button_get_instance_private (radio_button); - GtkWidget *old_group_singleton = NULL; - GtkWidget *new_group_singleton = NULL; - - g_return_if_fail (GTK_IS_RADIO_BUTTON (radio_button)); - - if (g_slist_find (group, radio_button)) - return; - - if (priv->group) - { - GSList *slist; - - priv->group = g_slist_remove (priv->group, radio_button); - - if (priv->group && !priv->group->next) - old_group_singleton = g_object_ref (priv->group->data); - - for (slist = priv->group; slist; slist = slist->next) - { - GtkRadioButton *tmp_button = slist->data; - GtkRadioButtonPrivate *tmp_priv = gtk_radio_button_get_instance_private (tmp_button); - - tmp_priv->group = priv->group; - } - } - - if (group && !group->next) - new_group_singleton = g_object_ref (group->data); - - priv->group = g_slist_prepend (group, radio_button); - - if (group) - { - GSList *slist; - - for (slist = group; slist; slist = slist->next) - { - GtkRadioButton *tmp_button = slist->data; - GtkRadioButtonPrivate *tmp_priv = gtk_radio_button_get_instance_private (tmp_button); - - tmp_priv->group = priv->group; - } - } - - g_object_ref (radio_button); - - g_object_notify_by_pspec (G_OBJECT (radio_button), radio_button_props[PROP_GROUP]); - g_signal_emit (radio_button, signals[GROUP_CHANGED], 0); - if (old_group_singleton) - { - g_signal_emit (old_group_singleton, signals[GROUP_CHANGED], 0); - g_object_unref (old_group_singleton); - } - if (new_group_singleton) - { - g_signal_emit (new_group_singleton, signals[GROUP_CHANGED], 0); - g_object_unref (new_group_singleton); - } - - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio_button), group == NULL); - - g_object_unref (radio_button); -} - -/** - * gtk_radio_button_join_group: - * @radio_button: the #GtkRadioButton object - * @group_source: (allow-none): a radio button object whose group we are - * joining, or %NULL to remove the radio button from its group - * - * Joins a #GtkRadioButton object to the group of another #GtkRadioButton object - * - * Use this in language bindings instead of the gtk_radio_button_get_group() - * and gtk_radio_button_set_group() methods - * - * A common way to set up a group of radio buttons is the following: - * |[ - * GtkRadioButton *radio_button; - * GtkRadioButton *last_button; - * - * while (some_condition) - * { - * radio_button = GTK_RADIO_BUTTON (gtk_radio_button_new (NULL)); - * - * gtk_radio_button_join_group (radio_button, last_button); - * last_button = radio_button; - * } - * ]| - */ -void -gtk_radio_button_join_group (GtkRadioButton *radio_button, - GtkRadioButton *group_source) -{ - g_return_if_fail (GTK_IS_RADIO_BUTTON (radio_button)); - g_return_if_fail (group_source == NULL || GTK_IS_RADIO_BUTTON (group_source)); - - if (group_source) - { - GSList *group; - group = gtk_radio_button_get_group (group_source); - - if (!group) - { - /* if we are not already part of a group we need to set up a new one - and then get the newly created group */ - gtk_radio_button_set_group (group_source, NULL); - group = gtk_radio_button_get_group (group_source); - } - - gtk_radio_button_set_group (radio_button, group); - } - else - { - gtk_radio_button_set_group (radio_button, NULL); - } -} - -/** - * gtk_radio_button_new: - * @group: (element-type GtkRadioButton) (allow-none): an existing - * radio button group, or %NULL if you are creating a new group. - * - * Creates a new #GtkRadioButton. To be of any practical value, a widget should - * then be packed into the radio button. - * - * Returns: a new radio button - */ -GtkWidget* -gtk_radio_button_new (GSList *group) -{ - GtkRadioButton *radio_button; - - radio_button = g_object_new (GTK_TYPE_RADIO_BUTTON, NULL); - - if (group) - gtk_radio_button_set_group (radio_button, group); - - return GTK_WIDGET (radio_button); -} - -/** - * gtk_radio_button_new_with_label: - * @group: (element-type GtkRadioButton) (allow-none): an existing - * radio button group, or %NULL if you are creating a new group. - * @label: the text label to display next to the radio button. - * - * Creates a new #GtkRadioButton with a text label. - * - * Returns: a new radio button. - */ -GtkWidget* -gtk_radio_button_new_with_label (GSList *group, - const char *label) -{ - GtkWidget *radio_button; - - radio_button = g_object_new (GTK_TYPE_RADIO_BUTTON, "label", label, NULL) ; - - if (group) - gtk_radio_button_set_group (GTK_RADIO_BUTTON (radio_button), group); - - return radio_button; -} - - -/** - * gtk_radio_button_new_with_mnemonic: - * @group: (element-type GtkRadioButton) (allow-none): the radio button - * group, or %NULL - * @label: the text of the button, with an underscore in front of the - * mnemonic character - * - * Creates a new #GtkRadioButton containing a label, adding it to the same - * group as @group. The label will be created using - * gtk_label_new_with_mnemonic(), so underscores in @label indicate the - * mnemonic for the button. - * - * Returns: a new #GtkRadioButton - */ -GtkWidget* -gtk_radio_button_new_with_mnemonic (GSList *group, - const char *label) -{ - GtkWidget *radio_button; - - radio_button = g_object_new (GTK_TYPE_RADIO_BUTTON, - "label", label, - "use-underline", TRUE, - NULL); - - if (group) - gtk_radio_button_set_group (GTK_RADIO_BUTTON (radio_button), group); - - return radio_button; -} - -/** - * gtk_radio_button_new_from_widget: (constructor) - * @radio_group_member: (allow-none): an existing #GtkRadioButton. - * - * Creates a new #GtkRadioButton, adding it to the same group as - * @radio_group_member. As with gtk_radio_button_new(), a widget - * should be packed into the radio button. - * - * Returns: (transfer none): a new radio button. - */ -GtkWidget* -gtk_radio_button_new_from_widget (GtkRadioButton *radio_group_member) -{ - GSList *l = NULL; - if (radio_group_member) - l = gtk_radio_button_get_group (radio_group_member); - return gtk_radio_button_new (l); -} - -/** - * gtk_radio_button_new_with_label_from_widget: (constructor) - * @radio_group_member: (allow-none): widget to get radio group from or %NULL - * @label: a text string to display next to the radio button. - * - * Creates a new #GtkRadioButton with a text label, adding it to - * the same group as @radio_group_member. - * - * Returns: (transfer none): a new radio button. - */ -GtkWidget* -gtk_radio_button_new_with_label_from_widget (GtkRadioButton *radio_group_member, - const char *label) -{ - GSList *l = NULL; - if (radio_group_member) - l = gtk_radio_button_get_group (radio_group_member); - return gtk_radio_button_new_with_label (l, label); -} - -/** - * gtk_radio_button_new_with_mnemonic_from_widget: (constructor) - * @radio_group_member: (allow-none): widget to get radio group from or %NULL - * @label: the text of the button, with an underscore in front of the - * mnemonic character - * - * Creates a new #GtkRadioButton containing a label. The label - * will be created using gtk_label_new_with_mnemonic(), so underscores - * in @label indicate the mnemonic for the button. - * - * Returns: (transfer none): a new #GtkRadioButton - **/ -GtkWidget* -gtk_radio_button_new_with_mnemonic_from_widget (GtkRadioButton *radio_group_member, - const char *label) -{ - GSList *l = NULL; - if (radio_group_member) - l = gtk_radio_button_get_group (radio_group_member); - return gtk_radio_button_new_with_mnemonic (l, label); -} - - -/** - * gtk_radio_button_get_group: - * @radio_button: a #GtkRadioButton. - * - * Retrieves the group assigned to a radio button. - * - * Returns: (element-type GtkRadioButton) (transfer none): a linked list - * containing all the radio buttons in the same group - * as @radio_button. The returned list is owned by the radio button - * and must not be modified or freed. - */ -GSList* -gtk_radio_button_get_group (GtkRadioButton *radio_button) -{ - GtkRadioButtonPrivate *priv = gtk_radio_button_get_instance_private (radio_button); - - g_return_val_if_fail (GTK_IS_RADIO_BUTTON (radio_button), NULL); - - return priv->group; -} - - -static void -gtk_radio_button_dispose (GObject *object) -{ - GtkWidget *old_group_singleton = NULL; - GtkRadioButton *radio_button = GTK_RADIO_BUTTON (object); - GtkRadioButtonPrivate *priv = gtk_radio_button_get_instance_private (radio_button); - GSList *tmp_list; - gboolean was_in_group; - - was_in_group = priv->group && priv->group->next; - - priv->group = g_slist_remove (priv->group, radio_button); - if (priv->group && !priv->group->next) - old_group_singleton = priv->group->data; - - tmp_list = priv->group; - - while (tmp_list) - { - GtkRadioButton *tmp_button = tmp_list->data; - GtkRadioButtonPrivate *tmp_priv = gtk_radio_button_get_instance_private (tmp_button); - - tmp_list = tmp_list->next; - - tmp_priv->group = priv->group; - } - - /* this button is no longer in the group */ - priv->group = NULL; - - if (old_group_singleton) - g_signal_emit (old_group_singleton, signals[GROUP_CHANGED], 0); - if (was_in_group) - g_signal_emit (radio_button, signals[GROUP_CHANGED], 0); - - G_OBJECT_CLASS (gtk_radio_button_parent_class)->dispose (object); -} - -static void -gtk_radio_button_clicked (GtkButton *button) -{ - GtkRadioButton *radio_button = GTK_RADIO_BUTTON (button); - GtkRadioButtonPrivate *priv = gtk_radio_button_get_instance_private (radio_button); - GtkToggleButton *toggle_button = GTK_TOGGLE_BUTTON (button); - GtkToggleButton *tmp_button; - GSList *tmp_list; - - g_object_ref (GTK_WIDGET (button)); - - if (gtk_toggle_button_get_active (toggle_button)) - { - tmp_button = NULL; - tmp_list = priv->group; - - while (tmp_list) - { - tmp_button = tmp_list->data; - tmp_list = tmp_list->next; - - if (tmp_button != toggle_button && - gtk_toggle_button_get_active (tmp_button)) - break; - - tmp_button = NULL; - } - - if (tmp_button) - gtk_toggle_button_set_active (toggle_button, - !gtk_toggle_button_get_active (toggle_button)); - } - else - { - gtk_toggle_button_set_active (toggle_button, - !gtk_toggle_button_get_active (toggle_button)); - - tmp_list = priv->group; - while (tmp_list) - { - tmp_button = tmp_list->data; - tmp_list = tmp_list->next; - - if (gtk_toggle_button_get_active (tmp_button) && (tmp_button != toggle_button)) - { - g_signal_emit_by_name (tmp_button, "clicked"); - break; - } - } - } - - gtk_widget_queue_draw (GTK_WIDGET (button)); - - g_object_unref (button); -} diff --git a/gtk/gtkradiobutton.h b/gtk/gtkradiobutton.h deleted file mode 100644 index d2922fd3da..0000000000 --- a/gtk/gtkradiobutton.h +++ /dev/null @@ -1,74 +0,0 @@ -/* GTK - The GIMP Toolkit - * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see . - */ - -/* - * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS - * file for a list of people on the GTK+ Team. See the ChangeLog - * files for a list of changes. These files are distributed with - * GTK+ at ftp://ftp.gtk.org/pub/gtk/. - */ - -#ifndef __GTK_RADIO_BUTTON_H__ -#define __GTK_RADIO_BUTTON_H__ - - -#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) -#error "Only can be included directly." -#endif - -#include - - -G_BEGIN_DECLS - -#define GTK_TYPE_RADIO_BUTTON (gtk_radio_button_get_type ()) -#define GTK_RADIO_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_RADIO_BUTTON, GtkRadioButton)) -#define GTK_IS_RADIO_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_RADIO_BUTTON)) - - -typedef struct _GtkRadioButton GtkRadioButton; - -GDK_AVAILABLE_IN_ALL -GType gtk_radio_button_get_type (void) G_GNUC_CONST; - -GDK_AVAILABLE_IN_ALL -GtkWidget* gtk_radio_button_new (GSList *group); -GDK_AVAILABLE_IN_ALL -GtkWidget* gtk_radio_button_new_from_widget (GtkRadioButton *radio_group_member); -GDK_AVAILABLE_IN_ALL -GtkWidget* gtk_radio_button_new_with_label (GSList *group, - const char *label); -GDK_AVAILABLE_IN_ALL -GtkWidget* gtk_radio_button_new_with_label_from_widget (GtkRadioButton *radio_group_member, - const char *label); -GDK_AVAILABLE_IN_ALL -GtkWidget* gtk_radio_button_new_with_mnemonic (GSList *group, - const char *label); -GDK_AVAILABLE_IN_ALL -GtkWidget* gtk_radio_button_new_with_mnemonic_from_widget (GtkRadioButton *radio_group_member, - const char *label); -GDK_AVAILABLE_IN_ALL -GSList* gtk_radio_button_get_group (GtkRadioButton *radio_button); -GDK_AVAILABLE_IN_ALL -void gtk_radio_button_set_group (GtkRadioButton *radio_button, - GSList *group); -GDK_AVAILABLE_IN_ALL -void gtk_radio_button_join_group (GtkRadioButton *radio_button, - GtkRadioButton *group_source); -G_END_DECLS - -#endif /* __GTK_RADIO_BUTTON_H__ */ diff --git a/gtk/meson.build b/gtk/meson.build index dee33baa5e..0f55ece382 100644 --- a/gtk/meson.build +++ b/gtk/meson.build @@ -331,7 +331,6 @@ gtk_public_sources = files([ 'gtkprintsettings.c', 'gtkprogressbar.c', 'gtkpropertylookuplistmodel.c', - 'gtkradiobutton.c', 'gtkrange.c', 'gtktreerbtree.c', 'gtkrecentmanager.c', @@ -610,7 +609,6 @@ gtk_public_headers = files([ 'gtkprintoperationpreview.h', 'gtkprintsettings.h', 'gtkprogressbar.h', - 'gtkradiobutton.h', 'gtkrange.h', 'gtkrecentmanager.h', 'gtkrender.h', -- 2.30.2